var gulp = require('gulp');
var ts = require('gulp-typescript');
var uglify = require('gulp-uglify');
var nodemon = require('gulp-nodemon');
var babel = require('gulp-babel');
var sourcemaps = require('gulp-sourcemaps');

var tsProject = ts.createProject('tsconfig.json');

gulp.task('compile', function() {
    return tsProject.src()
        .pipe(sourcemaps.init())
        .pipe(tsProject())
        .pipe(babel({
            presets: [
                [
                    '@babel/preset-env',
                    {
                        // "targets": {
                        //   "esmodules": true
                        // },
                        "modules": "commonjs"
                    }
                ]
            ]
        }))
        .pipe(uglify())
        .pipe(sourcemaps.write('./'))
        .pipe(gulp.dest('dist'));
});

gulp.task('default', gulp.series('compile', function() {
    return nodemon({
        script: 'dist/start.js', // 服务的启动文件
        watch: 'src', // 源代码目录
        tasks: ['compile'], // 在重启服务前需要执行的任务
        ext: 'ts', // 监听.ts结尾的文件 必须
        // 设置环境
        env: {
            'NODE_ENV': 'development'
        },
        // 必须开启debug模式
        exec: 'node --inspect'
    });
}));
